// 输出带有颜色的字符日志
function Color() {}

Color.PREFIX = '\033[';
Color.SUFFIX = 'm';
Color.SEPARATOR = ';';
// 显示方式
Color.ATTR_NORMAL = '0';
Color.ATTR_LIGHT = '1'; // 高亮
Color.UNDERLINE = '4'; // 下划线
Color.BLINK = '5'; // 闪烁
Color.ATTR_REVERSE = '7'; // 反白
Color.HIDE = '8'; // 隐藏
// 字体颜色,前景色
Color.FG_BLACK = '30';
Color.FG_RED = '31';
Color.FG_GREEN = '32';
Color.FG_YELLOW = '33';
Color.FG_BLUE = '34';
Color.FG_MAGENTA = "35";
Color.FG_CYAN = "36";
Color.FG_WHITE = "37";
// 背景色
Color.BG_BLACK = '40';
Color.BG_RED = "41";
Color.BG_GREEN = "42";
Color.BG_YELLOW = "44";
Color.BG_BLUE = "44";
Color.BG_MAGENTA = "45";
Color.BG_CYAN = "46";
Color.BG_WHITE = "47";

Color.format = function (msg, attr, fg, bg) {
  return Color.PREFIX + attr +
    Color.SEPARATOR + fg +
    Color.SEPARATOR + bg + Color.SUFFIX +
    msg +
    Color.PREFIX + Color.ATTR_NORMAL + Color.SUFFIX;
}

Color.prototype = {
  red(msg) {
    return Color.format(msg, Color.ATTR_LIGHT, Color.FG_RED, Color.BG_BLACK);
  },
  yellow(msg) {
    return Color.format(msg, Color.ATTR_LIGHT, Color.FG_YELLOW, Color.BG_BLACK);
  },
  green(msg) {
    return Color.format(msg, Color.ATTR_NORMAL, Color.FG_GREEN, Color.BG_BLACK);
  }
};

module.exports = Color;